<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>


    <script>
        //匿名函数
        // var a = function() {
        //     console.log("我是匿名函数")
        // }

        // a();

        // var a = 3; //全局变量
        // console.log(a) //3

        // function m() {
        //     var b = 4;
        //     console.log(a); //3(全局)
        //     console.log(b) //4
        // }
        // m();

        // console.log(b) // b is not defined


        //输入12
        // var i = 20;

        // function first() {
        //     var i = 5;
        //     for (var j = 0; j < i; j++) {
        //         document.write("&nbsp;&nbsp;&nbsp;&nbsp;" + j);
        //     }
        // }

        // function second() {
        //     var t = prompt("输入一个数", "")
        //     if (t > i) {
        //         document.write(t);
        //     } else {
        //         document.write(i);
        //     }
        //     first();
        // }
        //20 0,1,2,3,4



        //变量声明提升，会将变量的声明提升到所在区域的最顶端，但是值不会带过去
        // function fun() {
        //     console.log(a); //undefind
        //     var a = 3;
        //     console.log(a); //3

        // }
        // fun();

        // console.log(b)
        // var b = 4;
        // console.log(b)

        // fun();//当使用声明的方式来创建函数的时候，会在所有代码执行之前创建好，所以在任何地方都可以调用
        // fun2(); //当使用表达式来创建的时候，就会产生声明提升
        // console.log(fun2)//
        // console.log(fun)

        // function fun() {
        //     console.log("函数fun调用")
        // }


        // var fun2 = function() {
        //     console.log("函数fun2被调用了")
        // }


        var a = 18;
        fun1();

        function fun1() {
            var b = 9;
            console.log(a); //?undefind
            console.log(b); //9
            var a = '123';
        }
    </script>
</body>

</html>